package com.xssn.fjnd.content.service;

import com.aliyuncs.exceptions.ClientException;
import com.xssn.fjnd.content.req.VideoREQ;
import com.xssn.fjnd.entities.Video;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xssn.fjnd.feign.req.UserInfoREQ;
import com.xssn.util.base.Result;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 视频信息表 服务类
 * </p>
 *
 * @author 线狮少年
 * @since 2023-08-14
 */
public interface IVideoService extends IService<Video> {

    /**
     * 阿里云上传视频
     *
     * @param file
     * @return
     */
    String uploadVideo(MultipartFile file);


    /**
     * 根据id删除阿里云视频
     *
     * @param videoId
     * @return
     */
    Result deleteVideoBySourceId(String videoId);

    /**
     * 批量删除视频
     *
     * @param videoIdList
     * @return
     */
    void removeVideoByIdList(List<String> videoIdList) throws ClientException;


    /**
     * 获取音/视频播放凭证
     *
     * @param videoSourceId
     * @return
     */
    String getPlayAuth(String videoSourceId) throws ClientException;

    /**
     * 获取音/视频播放地址
     *
     * @param videoSourceId
     * @return
     */
    String getPlayInfo(String videoSourceId) throws ClientException;


    /**
     * 获取视频列表查询条件
     * @param req
     * @return
     */
    Result queryPage(VideoREQ req);


    /**
     * 新增视频信息
     * @param video
     */
    void saveVideoInfo(Video video);

    /**
     * 删除视频信息
     * @param id
     * @return
     */
    Result deleteVideoById(String id);


    /**
     * 修改视频信息
     * @param video
     */
    void updateVideoInfoById(Video video);


    /**
     * 更新视频和评论表中的用户信息（用户昵称，用户头像）
     * @param req
     * @return
     */
    boolean updateUserInfo(UserInfoREQ req);

    /**
     * 根据播放量选取前四的视频对象
     * @param type
     * @return
     */
    Result searchVideoByType(Integer type);


    /**
     * 更新视频浏览量
     * @param id
     * @return
     */
    Result updatePlayCount(String id);


    /**
     * 更新视频点赞数
     * @param id
     * @param count
     * @return
     */
    Result updateThumhup(String id, int count);
}
